Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на C++ — оборачивание C API в безопасные RAII-объекты.
Многие библиотеки на C (например, OpenSSL, SQLite, libpng) требуют вручную управлять ресурсами — открывать, закрывать, аллоцировать и освобождать. Это источник ошибок: забыли free(), упустили close(), получили утечку памяти или файлового дескриптора.
В C++ мы можем обернуть такие ресурсы в класс с аккуратным деструктором:
class FileHandle { public: explicit FileHandle(FILE* file) : file_(file) {} ~FileHandle() { if (file_) { fclose(file_); } }
FILE* get() const { return file_; }
private: FILE* file_; };
Теперь, даже если функция выбросит исключение или произойдет выход из области видимости, файл закроется автоматически!
Такие классы легко комбинировать с std::unique_ptr через кастомные делетеры для ещё большей безопасности.
Не забывайте: RAII (Resource Acquisition Is Initialization) — один из важнейших паттернов для профессионального C++.
Сегодня хочу показать вам один из приёмов, который часто выручает в реальной разработке на C++ — оборачивание C API в безопасные RAII-объекты.
Многие библиотеки на C (например, OpenSSL, SQLite, libpng) требуют вручную управлять ресурсами — открывать, закрывать, аллоцировать и освобождать. Это источник ошибок: забыли free(), упустили close(), получили утечку памяти или файлового дескриптора.
В C++ мы можем обернуть такие ресурсы в класс с аккуратным деструктором:
class FileHandle { public: explicit FileHandle(FILE* file) : file_(file) {} ~FileHandle() { if (file_) { fclose(file_); } }
FILE* get() const { return file_; }
private: FILE* file_; };
Теперь, даже если функция выбросит исключение или произойдет выход из области видимости, файл закроется автоматически!
Такие классы легко комбинировать с std::unique_ptr через кастомные делетеры для ещё большей безопасности.
Не забывайте: RAII (Resource Acquisition Is Initialization) — один из важнейших паттернов для профессионального C++.
Telegram is a cloud-based instant messaging service that has been making rounds as a popular option for those who wish to keep their messages secure. Telegram boasts a collection of different features, but it’s best known for its ability to secure messages and media by encrypting them during transit; this prevents third-parties from snooping on messages easily. Let’s take a look at what Telegram can do and why you might want to use it.
The SSE was the first modern stock exchange to open in China, with trading commencing in 1990. It has now grown to become the largest stock exchange in Asia and the third-largest in the world by market capitalization, which stood at RMB 50.6 trillion (US$7.8 trillion) as of September 2021. Stocks (both A-shares and B-shares), bonds, funds, and derivatives are traded on the exchange. The SEE has two trading boards, the Main Board and the Science and Technology Innovation Board, the latter more commonly known as the STAR Market. The Main Board mainly hosts large, well-established Chinese companies and lists both A-shares and B-shares.